package uy.com.antel.dao;


import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import uy.com.antel.entity.Editorial;
import uy.com.antel.entity.Publicacion;



@Stateless
public class EditorialDAO implements EditorialDAOLocal {
	
	 @PersistenceContext(unitName="pruebaJEE")
	    private EntityManager em;

	@Override
	public Editorial findEditorial(String nombre) {
			Editorial e;
	Query q = em.createQuery("SELECT u FROM Editorial u WHERE u.nombre = :nombre");
			q.setParameter("nombre", nombre);
			try	{				
				q.setMaxResults(1);
				e = (Editorial) q.getSingleResult();	
				}
			catch(NoResultException ex)
			{	return null;}			
			return e;				
	}

	@Override
	public boolean persistEditorial(Editorial edit) {
		if (!(existEditorial(edit.getNombre()))) {
		  em.persist(edit);}
		
		  return true;
		}
	
	@Override
	public void removeEditorial(Editorial edit) {
	 edit = em.find(Editorial.class, edit.getId());
	        em.remove(edit);
	    }

	@Override
	public List<Editorial> listado() {
		 Query query = em.createQuery("select e from Editorial e");
		 @SuppressWarnings("unchecked")
		List<Editorial> ee = query.getResultList();
		 return ee;
	}

	@Override
	public boolean existEditorial(String nombre) {		
		Query query = em.createQuery("select u from Editorial u where u.nombre = :nombre");
		query.setParameter("nombre" ,nombre );
		return ((query.getResultList() != null) && (query.getResultList().size() > 0)); 
	}

}
